selfhtml.de - Alles für den Webmaster!

 

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

2 Variable

Autor: stefan78
Datum: 08.03.2010 11:46:55

Hallo an Alle,

ich wollte mal fragen, ob es in JavaScript möglich ist, aus mehreren Formularfeldern zum Formularcheck eine Variable zu erstellen?

vereinfachtes Beispiel:
ich habe ein Formular, in dem ein Termin ausgewählt werden kann, und zwar per Pull-Down-Menü:

<select name="termin_datum_tag">01</select>
<select name="termin_datum_monat">05</select>
<select name="termin_datum_jahr">2010</select>

oder

<input type="checkbox" name="termin_datum_absprache" value="nach Absprache">

Um ein Formularcheck durchzuführen, würde ich gerne den inhalt der listen tag, monat, jahr zu einer Variable termin_datum zusammenfassen, um anschließend ein Formularcheck ausführen zu lassen:

if(document.notizbogen.termin_datum.value > "" && document.forms["notizbogen"].elements["termin_datum_absprache"].checked == true)
{
alert("Entweder Termin ODER nach Absprache auswählen");
document.notizbogen.termin_datum_tag.focus();
return false;
}

ich steh irgendwie auf dem Schlauch, da ich keine Möglichkeit finde, aus termin_datum_tag, termin_datum_monat, termin_datum_jahr eine Variable termin_datum zu erstellen.

Wäre prima, wenn mir jemand helfen könnte.



Re: 2 Feld-Bezeichnungen aus einem Formular zu einer Variablen zusammenfügen

Autor: stefan78
Datum: 08.03.2010 12:46:36

Das Thema oben sollte selbstverständlich

2 Feld-Bezeichnungen aus einem Formular zu einer Variablen zusammenfügen

heissen



Formularüberprüfung mit mehreren Feldern (was: 2 Variable)

Autor: PointedEars
Datum: 09.03.2010 01:09:54

> ich wollte mal fragen, ob es in JavaScript
> möglich ist, aus mehreren Formularfeldern zum
> Formularcheck eine Variable zu erstellen?

Dann tu's doch einfach ;-)

> vereinfachtes Beispiel:
> ich habe ein Formular, in dem ein Termin
> ausgewählt werden kann, und zwar per
> Pull-Down-Menü:

Die korrekte Bezeichnung wäre wohl Drop-Down-Menü; allerdings ist die Darstellung von SELECT-Elementen nicht abschliessend definiert.  Auf meinem iPhone z.B. wird daraus eine Roll-Liste ähnlich wie bei einem Spielautomat; also nix Dropdown.

> <select
> name="termin_datum_tag">01</select>
> <select
> name="termin_datum_monat">05</select>
> <select
> name="termin_datum_jahr">2010</select>

Ich geh' mal davon aus, dass das zu stark gekürzter Quelltext ist, denn so wäre es ungültig (mindestens ein OPTION-Element fe lt jeweils) und hätte auch keine Chance, als Dropdown dargestellt zu werden (size="1" fe lt).

> oder
>
> <input type="checkbox"
> name="termin_datum_absprache" value="nach
> Absprache">

Das ist Unfug.  Möglicherweise meinst Du

  <label><input type="checkbox"
    name="termin_datum_absprache">nach Absprache</label>
  
> Um ein Formularcheck durchzuführen, würde ich
> gerne den inhalt der listen tag, monat, jahr zu
> einer Variable termin_datum zusammenfassen, um
> anschließend ein Formularcheck ausführen zu
> lassen:
>
> if(document.notizbogen.termin_datum.value > ""

Das ist immer wahr, wenn der Wert auf der linken Seite nicht leer ist.  `if (linkeSeite)' ist effizienter.

> &&
> document.forms["notizbogen"].elements["termin_datum_absprache"].checked
> == true)

Ist Dir klar, dass Du hier dasselbe Objekt mehrfach referenzierst?  Ausserdem ist der typkonvertierende Vergleich mit `true' oder `false' immer überflüssig.

> {
> alert("Entweder Termin ODER nach Absprache
> auswählen");

  window.alert(...);

> document.notizbogen.termin_datum_tag.focus();

Und hier schon wieder.  Standardkonform müsste es ausserdem

  document.forms["notizbogen"].elements["termin_datum_tag"].focus();

heissen.

> return false;
> }
>
> ich steh irgendwie auf dem Schlauch, da ich keine
> Möglichkeit finde, aus termin_datum_tag,
> termin_datum_monat, termin_datum_jahr eine
> Variable termin_datum zu erstellen.

Mir ist nicht ganz klar, was genau Du erreichen möchtest, wahrscheinlich auch weil wesentliche Teile wie Funktionsdeklaration und -aufruf fe len.

Möglicherweise suchst Du das Folgende (Quickhack):

  <script type="text/javascript">
    function isHostMethod(o, p)
    {
      if (!o)
      {
        return false;
      }

      var t = typeof o[p];
      return /bunknownb/i.test(t) || /b(function|object)b/i.test(t) && o[p];
    }

    function getSelectedValue(oSelect)
    {
      var i;

      if (!oSelect
          || typeof oSelect.selectedIndex == "undefined"
          && ((i = oSelect.selectedIndex) || true)
          || i < 0)
      {
        return "";
      }

      return oSelect.options[i].value || "";
    }

    function validateForm(f)
    {
      var
        es = f.elements,
        oTag = es["termin_datum_tag"],
        sTag = getSelectedValue(oTag),
        sMonat = getSelectedValue(es["termin_datum_monat"]),
        sJahr = getSelectedValue(es["termin_datum_jahr"]),
        bAbsprache = es["termin_datum_absprache"].checked;

      if (bAbsprache && (sTag + sMonat + sJahr))
      {
        window.alert("Bitte entweder einen Termin oder "Termin nach Absprache" auswählen.");

        if (isHostMethod(oTag, "focus"))
        {
          eval("try { oTag.focus(); } catch (e) {}");
        }

        return false;
      }

      var termin_datum = [sJahr, sMonat, sTag].join("-");

      /* tu was mit termin_datum */

      return true;
    }
  </script>

  <form onsubmit="return validateForm(this)">
    ...
  </form>

Ich würde allerdings den Fokus auf das Element setzen, dessen ausgewählter Wert leer ist, und den Datumswert erst serverseitig berechnen.


PointedEars



[OT] Editieren (was: Formularüberprüfung mit mehreren Feldern)

Autor: PointedEars
Datum: 09.03.2010 08:23:10

> function isHostMethod(o, p)
> {
> if (!o)
> {
> return false;
> }
>
> var t = typeof o[p];
> return /bunknownb/i.test(t) ||
> /b(function|object)b/i.test(t) && o[p];

Hier vor den "b"s am Anfang und Ende sowie ...

> [...]
> window.alert("Bitte
> entweder einen Termin oder "Termin nach
> Absprache" auswählen.");

... hier vor den inneren Anführungszeichen noch den Backslash ergänzen, den die Forensoftware entfernt hat.

@Mod+Admin: Bitte reparieren.

> [...]
> <form onsubmit="return
> validateForm(this)">

Hier fe lt noch das action-Attribut für gültiges HTML.


PointedEars



Re: [OT] Editieren

Autor: gaby
Datum: 09.03.2010 16:12:28

> >     function isHostMethod(o, p)
> >     {
> >       if (!o)
> >       {
> >         return false;
> >       }
> >
> >       var t = typeof o[p];
> >       return /bunknownb/i.test(t) ||
> > /b(function|object)b/i.test(t) && o[p];
>
> Hier vor den "b"s am Anfang und Ende sowie ...
>
> > [...]
> >         window.alert("Bitte
> > entweder einen Termin oder "Termin nach
> > Absprache" auswählen.");
>
> ... hier vor den inneren Anführungszeichen noch
> den Backslash ergänzen, den die Forensoftware
> entfernt hat.
>
> @Mod+Admin: Bitte reparieren.
>
> > [...]
> >   <form onsubmit="return
> > validateForm(this)">
>
> Hier fe lt noch das action-Attribut für gültiges HTML.


Hallo,

Ich kann zwar editieren, jedoch würden dann die Einrückungen in Deinem Code verschwinden, und er wäre somit sehr schlecht lesbar.

Poste doch bitte nochmal die korrigierte Version komplett neu. Danach kann ich Deine letzten beiden Postings löschen.
(Hierbei gehen dann gleichzeitig alle Beiträge "unterhalb" der Gelöschten ebenfalls über den Jordan.
Sag bitte Bescheid, wenn Du es nicht so haben möchtest.


Grüße
gaby




Re: [OT] Editieren

Autor: PointedEars
Datum: 11.03.2010 03:41:56

> > > [...]
> > >       var t
> > > = typeof o[p];
> > >       return
> > > /bunknownb/i.test(t) ||
> > > /b(function|object)b/i.test(t)
> > > && o[p];
> >
> > Hier vor den "b"s am Anfang und Ende sowie
> > ...
> >
> > > [...]
> >
> >        
> window.alert("Bitte
> > > entweder einen Termin oder "Termin
> nach
> > > Absprache" auswählen.");
> >
> > ... hier vor den inneren Anführungszeichen
> noch
> > den Backslash ergänzen, den die
> Forensoftware
> > entfernt hat.
> >
> > @Mod+Admin: Bitte reparieren.
> > [...]
>
> Hallo,
>
> Ich kann zwar editieren, jedoch würden dann die
> Einrückungen in Deinem Code verschwinden, und er
> wäre somit sehr schlecht lesbar.

Da wäre wohl ein Update des Moderatoren-Interfaces sinnvoll.

> Poste doch bitte nochmal die korrigierte Version
> komplett neu. Danach kann ich Deine letzten
> beiden Postings löschen.
> (Hierbei gehen dann gleichzeitig alle Beiträge
> "unterhalb" der Gelöschten ebenfalls über den
> Jordan.
> Sag bitte Bescheid, wenn Du es nicht so haben
> möchtest.

Da wohl keiner von uns beiden Lust auf Ratespielchen hat (selbst wenn ich jetzt zwei Backslashes schreibe, ist nicht garantiert, dass einer davon ankommt), repariert ihr bitte lieber erst den Bug, der eingegebene Backslashes beim Posten entfernt, damit es nicht wieder vorkommt.

Danach poste ich den Originalquelltext gern noch einmal.  Wobei ich denke, dass mit meinen Erklärungen die nötigen Korrekturen ersichtlich sind.

Übrigens: Wenn Quelltext zitiert wird, so wird dieser sehr seltsam umbrochen, so dass das Zitat von Hand korrigiert werden muss (hier mal absichtlich nicht korrigiert).  Wäre gut, wenn das bei dieser Gelegenheit gleich mit repariert werden würde.  Ich verwende Iceweasel/Firefox 3.5.8, mit Mobile Safari 4.0 beobachte ich aber denselben Effekt.


Gruss,

PointedEars



Re: [OT] Editieren

Autor: gaby
Datum: 19.03.2010 03:56:46


Hallo,

Du hast Post.


Grüße
Gaby



Re: Formularüberprüfung mit mehreren Feldern

Autor: PointedEars
Datum: 21.03.2010 00:58:22

Na dann auf ein Neues ... ;-)

> ich wollte mal fragen, ob es in JavaScript
> möglich ist, aus mehreren Formularfeldern zum
> Formularcheck eine Variable zu erstellen?

Dann tu's doch einfach ;-)

> vereinfachtes Beispiel:
> ich habe ein Formular, in dem ein Termin
> ausgewählt werden kann, und zwar per
> Pull-Down-Menü:

Die korrekte Bezeichnung wäre wohl Drop-Down-Menü; allerdings ist die Darstellung von SELECT-Elementen nicht abschliessend definiert.  Auf meinem iPhone z.B. wird daraus eine Roll-Liste ähnlich wie bei einem Spielautomat; also nix Dropdown.

> <select
> name="termin_datum_tag">01</select>
> <select
> name="termin_datum_monat">05</select>
> <select
> name="termin_datum_jahr">2010</select>

Ich geh' mal davon aus, dass das zu stark gekürzter Quelltext ist, denn so wäre es ungültig (mindestens ein OPTION-Element fe lt jeweils) und hätte auch keine Chance, als Dropdown dargestellt zu werden (size="1" fe lt).

> oder
>
> <input type="checkbox"
> name="termin_datum_absprache" value="nach
> Absprache">

Das ist Unfug.  Möglicherweise meinst Du

  <label><input type="checkbox"
    name="termin_datum_absprache">nach Absprache</label>
  
> Um ein Formularcheck durchzuführen, würde ich
> gerne den inhalt der listen tag, monat, jahr zu
> einer Variable termin_datum zusammenfassen, um
> anschließend ein Formularcheck ausführen zu
> lassen:
>
> if(document.notizbogen.termin_datum.value > ""

Das ist immer wahr, wenn der Wert auf der linken Seite nicht leer ist.  `if (linkeSeite)' ist effizienter.

> &&
> document.forms["notizbogen"].elements["termin_datum_absprache"].checked
> == true)

Ist Dir klar, dass Du hier dasselbe Objekt mehrfach referenzierst?  Ausserdem ist der typkonvertierende Vergleich mit `true' oder `false' immer überflüssig.

> {
> alert("Entweder Termin ODER nach Absprache
> auswählen");

  window.alert(...);

> document.notizbogen.termin_datum_tag.focus();

Und hier schon wieder.  Standardkonform müsste es ausserdem

  document.forms["notizbogen"].elements["termin_datum_tag"].focus();

heissen.

> return false;
> }
>
> ich steh irgendwie auf dem Schlauch, da ich keine
> Möglichkeit finde, aus termin_datum_tag,
> termin_datum_monat, termin_datum_jahr eine
> Variable termin_datum zu erstellen.

Mir ist nicht ganz klar, was genau Du erreichen möchtest, wahrscheinlich auch weil wesentliche Teile wie Funktionsdeklaration und -aufruf fe len.

Möglicherweise suchst Du das Folgende (Quickhack):

  <script type="text/javascript">
    function isHostMethod(o, p)
    {
      if (!o)
      {
        return false;
      }

      var t = typeof o[p];
      return /\bunknown\b/i.test(t) || /\b(function|object)\b/i.test(t) && o[p];
    }

    function getSelectedValue(oSelect)
    {
      var i;

      if (!oSelect
          || typeof oSelect.selectedIndex == "undefined"
          && ((i = oSelect.selectedIndex) || true)
          || i < 0)
      {
        return "";
      }

      return oSelect.options[i].value || "";
    }

    function validateForm(f)
    {
      var
        es = f.elements,
        oTag = es["termin_datum_tag"],
        sTag = getSelectedValue(oTag),
        sMonat = getSelectedValue(es["termin_datum_monat"]),
        sJahr = getSelectedValue(es["termin_datum_jahr"]),
        bAbsprache = es["termin_datum_absprache"].checked;

      if (bAbsprache && (sTag + sMonat + sJahr))
      {
        window.alert('Bitte entweder einen Termin oder "Termin nach Absprache" auswählen.');

        if (isHostMethod(oTag, "focus"))
        {
          eval("try { oTag.focus(); } catch (e) {}");
        }

        return false;
      }

      var termin_datum = [sJahr, sMonat, sTag].join("-");

      /* tu was mit termin_datum */

      return true;
    }
  </script>

  <form onsubmit="return validateForm(this)">
    ...
  </form>

Ich würde allerdings den Fokus auf das Element setzen, dessen ausgewählter Wert leer ist, und den Datumswert erst serverseitig berechnen.


PointedEars



Re: Formularüberprüfung mit mehreren Feldern

Autor: PointedEars
Datum: 21.03.2010 01:00:18

>   <form onsubmit="return
> validateForm(this)">

@gaby: Hier bitte das action-Attribut aus dem Korrekturposting noch ergänzen, danke.


PointedEars



Re: Formularüberprüfung mit mehreren Feldern

Autor: gaby
Datum: 26.03.2010 04:39:35

> >


>
> @gaby: Hier bitte das action-Attribut aus dem
> Korrekturposting noch ergänzen, danke.



Wenn ich das Posting editiere, gehen die ganzen Einrückungen und Backslashes verloren.

Hast du nicht weiter unten geschrieben:

| Wobei ich denke, dass mit meinen Erklärungen
| die nötigen Korrekturen ersichtlich sind.


http://www.selfhtml.de/forum/zeigebeitrag_2_131009_130990_0.php


Ich bin z. Zt ziemlich im Stress und habe deshalb keine Zeit, Forenbugs zu reparieren.
Der Bug, daß die Zeileneinrückungen und die Backslashes beim Editieren verlorengehen, existiert schon sehr lange, und wir haben gelernt, damit umzugehen. ;-)
D.h., bei Fehlern posten wir einfach den gesamten _korrigierten_ Beitrag nochmal an die richtige Stelle im Thread, und löschen dann das falsche Posting.

Sind Backslashes in dem Posting, so müßte man an deren Stelle doppelte Backslashes schreiben, und darf sich den Beitrag vor dem Abschicken höchstens _einmal_ in der Vorschau ansehen.

Ich würde Dich also bitte, das genauso zu machen.
Danach würde ich Deinen _alten_ Beitrag löschen.

Der Aufwand ist ungleich geringer, als wenn ich Deinen Beitrag editiere, und alle Zeileneinrückungen und Backslashes von Hand korrigiere.


Grüße
gaby



[OT] Forumsbugs (was: Formularüberprüfung mit mehreren Feldern)

Autor: T.Jung
Datum: 26.03.2010 14:00:32

> Wenn ich das Posting editiere, gehen die ganzen
> Einrückungen und Backslashes verloren.
> (...)
> Der Bug, daß die Zeileneinrückungen und die
> Backslashes beim Editieren verlorengehen,
> existiert schon sehr lange, und wir haben
> gelernt, damit umzugehen. ;-)

Ich kenne ja den Quellcode des Forums nicht, aber was die Backslashes angeht, vermute ich, dass da einfach irgendwo ein stripslashes() steht, wo keins hingehört.

Tja, und die Sache mit den Zeilenumbrüchen und Einrückungen -- ich glaube, die »einfachste« Methode, das zu umgehen, wäre die Einführung von UBB-Tags wie [code] und [quote]...

Gruß,
Tobias



Re: [OT] Forumsbugs

Autor: Freddy
Datum: 26.03.2010 19:01:05

Hallo,

> > Der Bug, daß die Zeileneinrückungen und die
> > Backslashes beim Editieren verlorengehen,
> > existiert schon sehr lange, und wir haben
> > gelernt, damit umzugehen. ;-)
>
> Ich kenne ja den Quellcode des Forums nicht, aber
> was die Backslashes angeht, vermute ich, dass da
> einfach irgendwo ein stripslashes() steht, wo
> keins hingehört.
>
> Tja, und die Sache mit den Zeilenumbrüchen und
> Einrückungen -- ich glaube, die »einfachste«
> Methode, das zu umgehen, wäre die Einführung von
> UBB-Tags wie [code] und [quote]...

In dem Zuge könnte man auch eine einfache "Doppelpostsperre" integrieren (Token-Mechanismus oder so). Vielleicht sollte wir den Quellcode einfach mal hier offen legen und diskutieren/verbessern.
Andere Foren gehen ja auch mit der Zeit...


Gruß,
Freddy



Re: [OT] Forumsbugs

Autor: gaby
Datum: 27.03.2010 08:45:12

> Vielleicht sollte wir den Quellcode
> einfach mal hier offen legen und
> diskutieren/verbessern.


Moin allerseits!  :-)

Dieser Vorschlag ginge aber dann an Stefans Adresse. ;-)


Grüße
gaby



Re: [OT] Forumsbugs

Autor: Freddy
Datum: 27.03.2010 12:31:41

Hallo,

> > Vielleicht sollte wir den Quellcode
> > einfach mal hier offen legen und
> > diskutieren/verbessern.
>
> Moin allerseits!  :-)
>
> Dieser Vorschlag ginge aber dann an Stefans
> Adresse. ;-)

Hast Du nicht auch Zugriff per FTP?
Na gut, Cheffe zu unterrichten ist vielleicht doch keine schlechte Idee, kannst Du das machen?


Gruß,
Freddy